package practice.aop.spring;

import org.aspectj.lang.ProceedingJoinPoint;

//Around  Advice를  구현한  클래스
public class MemberAdvice {
	// Around Advice 구현
	public Object trace(ProceedingJoinPoint joinPoint) throws Throwable {
		String signatureString = joinPoint.getSignature().toShortString();
		System.out.println(signatureString + " 시작");
		long start = System.currentTimeMillis();
		try {
			// Advice가 적용될 대상객체 호출하기 전과 후의 시간 출력
			Object result = joinPoint.proceed();
			return result;
		} finally {
			long finish = System.currentTimeMillis();
			System.out.println(signatureString + " 종료");
			// 대상 객체의 메서드 호출 실행 시간 출력
			System.out.println(signatureString + " 실행 시간  :  "	+ (finish - start) + "ms");
		}
	}
}
